package org.study.swing.study01.component;

import javax.swing.*;

/**
 * 作用描述
 *
 * @author doveylovey
 * @version v1.0.0
 * @email 1135782208@qq.com
 * @date 2024年11月14日
 */
public class CheckBoxDemo2 {
    public static void main(String[] args) {
        testCheckBoxWithButtonGroup();
        testRadioButtonWithButtonGroup();
    }

    public static void testCheckBoxWithButtonGroup() {
        JFrame frame = new JFrame("示例：复选框");

        JPanel panel = new JPanel();
        // 复选框和单选按钮通常是非互斥的，即如果一个容器中有五个复选框，五个可以同时选中或不选中；为了使单选框互斥，必须将相关的组件分组。
        // 要将多个单选按钮组织成一组，只允许每次选中其中一个，可以创建一个ButtonGroup对象。
        ButtonGroup buttonGroup = new ButtonGroup();
        JCheckBox checkBox1 = new JCheckBox("选项1");
        buttonGroup.add(checkBox1);
        panel.add(checkBox1);
        JCheckBox checkBox2 = new JCheckBox("选项2");
        // 默认选中
        checkBox2.setSelected(true);
        buttonGroup.add(checkBox2);
        panel.add(checkBox2);
        JCheckBox checkBox3 = new JCheckBox("选项3");
        buttonGroup.add(checkBox3);
        panel.add(checkBox3);
        frame.setContentPane(panel);

        frame.setSize(600, 400);
        // 将窗口居中显示在屏幕上
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }

    public static void testRadioButtonWithButtonGroup() {
        JFrame frame = new JFrame("示例：单选框");

        JPanel panel = new JPanel();
        // 复选框和单选按钮通常是非互斥的，即如果一个容器中有五个复选框，五个可以同时选中或不选中；为了使单选框互斥，必须将相关的组件分组。
        // 要将多个单选按钮组织成一组，只允许每次选中其中一个，可以创建一个ButtonGroup对象。
        ButtonGroup buttonGroup = new ButtonGroup();
        JRadioButton radioButton1 = new JRadioButton("选项1");
        buttonGroup.add(radioButton1);
        panel.add(radioButton1);
        JRadioButton radioButton2 = new JRadioButton("选项2");
        // 默认选中
        radioButton2.setSelected(true);
        buttonGroup.add(radioButton2);
        panel.add(radioButton2);
        JRadioButton radioButton3 = new JRadioButton("选项3");
        buttonGroup.add(radioButton3);
        panel.add(radioButton3);
        frame.setContentPane(panel);

        frame.setSize(600, 400);
        // 将窗口居中显示在屏幕上
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}
